/**
 * 日期范围工具类 - 提供日期时间范围计算的实用工具方法
 *
 * 开发人员：徐少洋
 * 开发时间：2025-11-05 至 2025-11-08
 * 模块职责：提供常用的日期时间范围计算方法，方便业务逻辑中的时间范围查询和统计
 *
 * 技术要点：
 * - Java 8 LocalDateTime API的使用
 * - 线程安全的静态方法设计
 * - 今日开始和结束时间计算
 * - 历史日期范围计算支持
 * - 当前时间获取的便捷方法
 *
 * 开发故事：负责系统日期时间处理的核心工具类，与支付统计和融资分析深度配合，提供准确的时间范围计算能力。
 */
package com.pbl.util;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public final class DateRangeUtil {
    private DateRangeUtil() {}

    /**
     * 获取今日开始时间（00:00:00）
     * @return 今日开始的LocalDateTime对象
     */
    public static LocalDateTime todayStart() {
        LocalDate today = LocalDate.now();
        return LocalDateTime.of(today, LocalTime.MIN);
    }

    /**
     * 获取今日结束时间（23:59:59.999999999）
     * @return 今日结束的LocalDateTime对象
     */
    public static LocalDateTime todayEnd() {
        LocalDate today = LocalDate.now();
        return LocalDateTime.of(today, LocalTime.MAX);
    }

    /**
     * 获取指定天数前的开始时间
     * @param days 天数（向前回溯的天数）
     * @return 指定天数前的开始时间
     */
    public static LocalDateTime daysAgoStart(int days) {
        LocalDate d = LocalDate.now().minusDays(days);
        return LocalDateTime.of(d, LocalTime.MIN);
    }

    /**
     * 获取当前时间
     * @return 当前的LocalDateTime对象
     */
    public static LocalDateTime now() {
        return LocalDateTime.now();
    }
}
